﻿// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

using System.Collections.Generic;

namespace Iot.Device.Card.CreditCardProcessing
{
    /// <summary>
    /// Class containing the tag list definitions, their types, sources and numbers
    /// </summary>
    public class TagList
    {
        /// <summary>
        /// List of Tags description, source, conversion for display as well as if they are templates or contain Data Object Link
        /// This list is coming from the EMV documentation, see EMV book 3, Annexe A
        /// </summary>
        public static List<TagDetails> Tags = new List<TagDetails>()
        {
            new TagDetails() { TagNumber = 0x06, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Object Identifier (OID)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x41, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Country code and national data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x42, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Issuer Identification Number (IIN)", TagTemplateParent = new List<ushort>() { 0xBF0C , 0x73 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x42, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Issuer Identification Number (IIN)", TagTemplateParent = new List<ushort>() { 0xBF0C, 0x73 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x43, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Card service data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x44, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Initial access data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x45, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Card issuer's data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x46, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Pre-issuing data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x47, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Card capabilities", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x48, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Status information", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x4D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Extended header list", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x4F, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Dedicated File (ADF) Name ", TagTemplateParent = new List<ushort>() { 0x61 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x50, Source = Source.Icc, Decoder = ConversionType.RawString, Description = "Application Label", TagTemplateParent = new List<ushort>() { 0x61 , 0xA5 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x51, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Path (see 5.2.1)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x52, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Command-to-perform", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x53, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Discretionary data, discretionary template", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x56, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Track 1, Equivalent Data", TagTemplateParent = new List<ushort>() { 0x70, 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x57, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Track 2 Equivalent Data", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x57, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Track 2, Equivalent Data", TagTemplateParent = new List<ushort>() { 0x70, 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x58, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Track 3, Equivalent Data", TagTemplateParent = new List<ushort>() { 0x70, 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x59, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "card expiration date", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5A, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Application Primary Account Number (PAN)", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5B, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Name of an individual", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Tag list", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Header list", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Proprietary login data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F20, Source = Source.Icc, Decoder = ConversionType.RawString, Description = "Cardholder Name", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F21, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Track 1, identical to the data coded", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F22, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Track 2, identical to the data coded", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F23, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Track 3, identical to the data coded", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F24, Source = Source.Icc, Decoder = ConversionType.Date, Description = "Application Expiration Date", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F25, Source = Source.Icc, Decoder = ConversionType.Date, Description = "Application Effective Date", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F26, Source = Source.Icc, Decoder = ConversionType.Date, Description = "Date, Card Effective", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F27, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Interchange control", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F28, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Issuer Country Code", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F29, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Interchange profile", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F2A, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Transaction Currency Code", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F2B, Source = Source.Icc, Decoder = ConversionType.Date, Description = "Date of birth", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F2C, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Cardholder nationality", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F2D, Source = Source.Icc, Decoder = ConversionType.RawString, Description = "Language Preference", TagTemplateParent = new List<ushort>() { 0xA5 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F2E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cardholder biometric data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F2F, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "PIN usage policy", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F30, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Service Code  ", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F32, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Transaction counter", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F33, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Date, Transaction", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F34, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Application Primary Account Number (PAN) Sequence Number", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F35, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Sex (ISO5218)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F36, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Transaction Currency Exponent", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F37, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Static internal authentication (one-step)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F38, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Static internal authentication - first associated data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F39, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Static internal authentication - second associated data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F3A, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Dynamic internal authentication", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F3B, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Dynamic external authentication", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F3C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Dynamic mutual authentication", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F40, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cardholder portrait image", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F41, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Element list", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F42, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Address", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F43, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cardholder handwritten signature image", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F44, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application image", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F45, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Display message", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F46, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Timer", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F47, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Message reference", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F48, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Private Key, Cardholder", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F49, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Public Key, Cardholder", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F4A, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Public Key, Certification Authority", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F4B, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Deprecated (see note 2 below)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F4C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Certificate holder authorization", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F4D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Integrated circuit manufacturer identifier", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F4E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Certificate content", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F50, Source = Source.Icc, Decoder = ConversionType.RawString, Description = "Issuer URL", TagTemplateParent = new List<ushort>() { 0xBF0C , 0x73 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F52, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "ATR Historical Bytes", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F53, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "International Bank Account Number (IBAN)", TagTemplateParent = new List<ushort>() { 0xBF0C , 0x73 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F54, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Bank Identifier Code (BIC)", TagTemplateParent = new List<ushort>() { 0xBF0C , 0x73 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F55, Source = Source.Icc, Decoder = ConversionType.RawString, Description = "Issuer Country Code (alpha2 format)", TagTemplateParent = new List<ushort>() { 0xBF0C , 0x73 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F56, Source = Source.Icc, Decoder = ConversionType.RawString, Description = "Issuer Country Code (alpha3 format)", TagTemplateParent = new List<ushort>() { 0xBF0C , 0x73 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x5F57 , Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Account Type", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x60, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Dynamic Authentication", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x61, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Template", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x62, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, File Control Parameters (FCP)", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x63, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Wrapper", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x64, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, File Management Data (FMD)", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x65, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cardholder related data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x66, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Card data", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x67, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Authentication data", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x68, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Special user requirements", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x6A, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Login", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x6B, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Qualified name", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x6C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Cardholder image", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x6D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Application image", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x6E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application related data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x6F, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "File Control Information (FCI) Template", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x70, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, AEF Data", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x71, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Issuer Script 1", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x72, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Issuer Script 2", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x73, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Directory Discretionary", TagTemplateParent = new List<ushort>() { 0x61 }, IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x77, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Response Message Format 2", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x78, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Compatible Tag Allocation Authority", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x79, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Coexistent Tag Allocation Authority", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x7A, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Security Support (SS) see 6.4", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x7D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Input template for the verification of a certificate (the template is certified)", TagTemplateParent = new List<ushort>() { 0x7D }, IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x7E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Nesting Interindustry data objects", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x7F20, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Display control template", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x7F21, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cardholder certificate", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x7F2E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Biometric data template", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x7F49, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Cardholder public key", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x7F4C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Certificate Holder Authorization", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x7F4E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Certificate Body", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x7F60, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Biometric information", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x80, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Template, Response Message Format 1", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x81, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Amount, Authorized (Binary)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x82, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Interchange Profile", TagTemplateParent = new List<ushort>() { 0x77 , 0x80 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x83, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Template, Command", IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0x84, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Dedicated File (DF) Name", TagTemplateParent = new List<ushort>() { 0x6F }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x86, Source = Source.Issuer, Decoder = ConversionType.ByteArray, Description = "Issuer Script Command", TagTemplateParent = new List<ushort>() { 0x71 , 0x72 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x87, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Priority Indicator", TagTemplateParent = new List<ushort>() { 0x61 , 0xA5 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x88, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Short File Identifier (SFI)", TagTemplateParent = new List<ushort>() { 0xA5 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x89, Source = Source.Issuer, Decoder = ConversionType.RawString, Description = "Authorization Code", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x8A, Source = Source.Issuer| Source.Terminal, Decoder = ConversionType.RawString, Description = "Authorization Response Code", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x8C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Card Risk Management Data Object List 1 (CDOL1)", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = true },
            new TagDetails() { TagNumber = 0x8D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Card Risk Management Data Object List 2 (CDOL2)", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = true },
            new TagDetails() { TagNumber = 0x8E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cardholder Verification Method (CVM) List", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x8F, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Certification Authority Public Key Index", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x90, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Issuer Public Key Certificate", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x91, Source = Source.Issuer, Decoder = ConversionType.ByteArray, Description = "Issuer Authentication Data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x92, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Issuer Public Key Remainder", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x93, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Signed Static Application Data", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x94, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application File Locator (AFL)", TagTemplateParent = new List<ushort>() { 0x77 , 0x80 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x95, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Terminal Verification Results", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x97, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Transaction Certificate Data Object List (TDOL)", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = true },
            new TagDetails() { TagNumber = 0x98, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Transaction Certificate (TC) Hash Value", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x99, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Transaction Personal Identification Number (PIN) Data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9A, Source = Source.Terminal, Decoder = ConversionType.Date, Description = "Transaction Date", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9B, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Transaction Status Information", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9C, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Transaction Type", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Transaction Type", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Directory Definition File (DDF) Name", TagTemplateParent = new List<ushort>() { 0x61 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F01, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Acquirer Identifier", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F02, Source = Source.Terminal, Decoder = ConversionType.DecimalNumber, Description = "Amount, Authorized (Numeric)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F03, Source = Source.Terminal, Decoder = ConversionType.DecimalNumber, Description = "Amount, Other (Numeric)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F04, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Amount, Other (Binary)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F05, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Discretionary Data", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F06, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Application Identifier (AID) - terminal", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F07, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Usage Control", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F08, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Version Number", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F09, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Application Version Number", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F09, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Version Number, Terminal", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F0A, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Selection Registered Proprietary Data (ASRPD)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F0B, Source = Source.Icc, Decoder = ConversionType.RawString, Description = "Cardholder Name Extended", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F0D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Issuer Action Code - Default", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F0E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Issuer Action Code - Denial", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F0F, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Issuer Action Code - Online", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F10, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Issuer Application Data", TagTemplateParent = new List<ushort>() { 0x77 , 0x80 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F11, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Issuer Code Table Index", TagTemplateParent = new List<ushort>() { 0xA5 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F12, Source = Source.Icc, Decoder = ConversionType.RawString, Description = "Application Preferred Name", TagTemplateParent = new List<ushort>() { 0x61 , 0xA5 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F13, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Last Online Application Transaction Counter (ATC) Register", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F14, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Lower Consecutive Offline Limit", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F15, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Merchant Category Code", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F16, Source = Source.Terminal, Decoder = ConversionType.RawString, Description = "Merchant Identifier", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F17, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Personal Identification Number (PIN) Try Counter", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F18, Source = Source.Issuer, Decoder = ConversionType.ByteArray, Description = "Issuer Script Identifier", TagTemplateParent = new List<ushort>() { 0x71 , 0x72 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F19, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "EMV Tokenisation, Token Requestor ID", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F1A, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Terminal Country Code", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F1B, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Terminal Floor Limit", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F1C, Source = Source.Terminal, Decoder = ConversionType.RawString, Description = "Terminal Identification", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F1D, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Terminal Risk Management Data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F1E, Source = Source.Terminal, Decoder = ConversionType.RawString, Description = "Interface Device (IFD) Serial Number", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F1F, Source = Source.Icc, Decoder = ConversionType.RawString, Description = "Track 1 Discretionary Data", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F20, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Track 2 Discretionary Data", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F21, Source = Source.Terminal, Decoder = ConversionType.Time, Description = "Transaction Time", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F22, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Certification Authority Public Key Index", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F23, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Upper Consecutive Offline Limit", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F24, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "EMV Tokenisation, Payment Account Reference (PAR)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F25, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "EMV Tokenisation, Last 4 Digits of PAN", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F26, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Cryptogram", TagTemplateParent = new List<ushort>() { 0x77 , 0x80 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F27, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cryptogram Information Data", TagTemplateParent = new List<ushort>() { 0x77 , 0x80 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F28, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Contactless Application Capabilities Type", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F2A, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Kernel Identifier", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F2D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "ICC PIN Encipherment Public Key Certificate", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F2E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "ICC PIN Encipherment Public Key Exponent", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F2F, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "ICC PIN Encipherment Public Key Remainder", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F32, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Issuer Public Key Exponent", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F33, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Terminal Capabilities", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F34, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Cardholder Verification Method (CVM) Results", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F35, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Terminal Type", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F36, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Transaction Counter (ATC)", TagTemplateParent = new List<ushort>() { 0x77 , 0x80 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F37, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Unpredictable Number", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F38, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Processing Options Data Object List (PDOL)", TagTemplateParent = new List<ushort>() { 0xA5 }, IsTemplate = false, IsDol = true },
            new TagDetails() { TagNumber = 0x9F39, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Point-of-Service (POS) Entry Mode", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F3A, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Amount, Reference Currency", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F3B, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Application Reference Currency", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F3C, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Transaction Reference Currency Code", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F3D, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Transaction Reference Currency Exponent", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F40, Source = Source.Terminal, Decoder = ConversionType.ByteArray, Description = "Additional Terminal Capabilities", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F41, Source = Source.Terminal, Decoder = ConversionType.BcdToString, Description = "Transaction Sequence Counter", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F42, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Application Currency Code", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F42, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Currency Code, Application", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F43, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Application Reference Currency Exponent", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F44, Source = Source.Icc, Decoder = ConversionType.BcdToString, Description = "Application Currency Exponent", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F45, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Data Authentication Code", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F46, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "ICC Public Key Certificate", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F47, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "ICC Public Key Exponent", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F48, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "ICC Public Key Remainder", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F49, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Dynamic Data Authentication Data Object List (DDOL)", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = true },
            new TagDetails() { TagNumber = 0x9F4A, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Static Data Authentication Tag List", TagTemplateParent = new List<ushort>() { 0x70 , 0x77 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F4B, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Signed Dynamic Application Data  ", TagTemplateParent = new List<ushort>() { 0x77 , 0x80 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F4C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "ICC Dynamic Number", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F4D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Log Entry", TagTemplateParent = new List<ushort>() { 0xBF0C , 0x73 }, IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F4E, Source = Source.Terminal, Decoder = ConversionType.RawString, Description = "Merchant Name and Location", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F4F, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Log Format", IsTemplate = false, IsDol = true },
            new TagDetails() { TagNumber = 0x9F50, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cardholder Verification Status", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F51, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Currency Code, Application", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F52, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Terminal Compatibility Indicator", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F53, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Contactless Card Verification Results (CVR)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F54, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "DS ODS Card", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F5A, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Product Membership Identifier", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F5B, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Product Membership Number", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F5C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Magstripe Data Object List (MDOL)", IsTemplate = false, IsDol = true },
            new TagDetails() { TagNumber = 0x9F5D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Available Offline Spending Amount (AOSA)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F5E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Data Storage (DS) ID", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F5F, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Offline Balance", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F60, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Issuer Update Parameter", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F61, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CVC3 Track2", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F62, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "PCVC3 Track1", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F63, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Product Identification Information", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F64, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "NATC Track1", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F65, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "PCVC3 Track2", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F66, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Terminal Transaction Qualifiers (TTQ)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F67, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Form Factor", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F69, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Card Authentication Related Data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F6A, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Unpredictable Number (UN)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F6B, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Track2 data", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F6C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Card Transaction Qualifiers (CTQ)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F6D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Contactless Reader Capabilities", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F6E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Enhanced Contactless Reader Capabilities", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F6F, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "DS Slot Management Control", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F70, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Card Interface and Payment Capabilities", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F71, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Card Processing Requirements (CPR)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F72, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Protected Data Envelope 3", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F73, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Protected Data Envelope 4", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F74, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "??", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F75, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Unprotected Data Envelope 1", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F76, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Unprotected Data Envelope 2", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F77, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application Specification Version", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F78, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Unprotected Data Envelope 4", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F79, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Unprotected Data Envelope 5", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F7C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Customer E0xclusive Data (CED)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F7D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Contactless Payment Application Version Number", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F7E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Mobile Support Indicator", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0x9F7F, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "DS Unpredictable Number", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xA5, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "File Control Information (FCI) Proprietary Template", TagTemplateParent = new List<ushort>() { 0x6F }, IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0xBF0C, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "File Control Information (FCI) Issuer Discretionary Data", TagTemplateParent = new List<ushort>() { 0xA5 }, IsTemplate = true, IsDol = false },
            new TagDetails() { TagNumber = 0xBF60, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Integrated Data Storage Record Update Template", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xC0, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Contactless-Application Configuration Options (CL-ACO)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xD1, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Offline Balance", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xD2, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Integrated Data Storage Directory (IDSD)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xD4, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CVM-Accumulator", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xD5, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cumulative CVM Transaction Amount limit 1 (CVM-Cum 1)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xD6, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cumulative CVM Transaction Amount limit 2 (CVM-Cum 2)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xD7, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CVM Single Transaction Amount limit 1 (CVM-STA 1)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xD8, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CVM Single Transaction Amount limit 2 (CVM-STA 2)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xD9, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CVM-Counter", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDA, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Consecutive CVM Transaction limit 1 (CVM-Cons 1)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDB, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Consecutive CVM Transaction limit 2 (CVM-Cons 2)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDE, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Counters and Accumulator Control Options (CACO)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF30, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CRM-CAC Switch Interface", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF31, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CRM-CAC Denial", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF32, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CRM-CAC Online", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF33, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CRM-CAC Default", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF34, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CVM-CAC Online-PIN", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF35, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CVM-CAC Signature", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF40, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CL-Accumulator", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF41, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Cumulative Contactless Transaction limit (CL-Cum)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF42, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Single Contactless Transaction Amount (CL-STA)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF43, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "CL-Counter", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF44, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Consecutive Contactless Transaction limit (CL-Cons)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF4B, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "POS Cardholder Interaction Information", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF4D, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Load Log Entry", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF60, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "DS Input (Card)", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF61, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "DS Digest H", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF62, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "DS ODS Info", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF63, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "DS ODS Term", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF71, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Value Added Tax 1", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF72, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Value Added Tax 2", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF78, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Application State", IsTemplate = false, IsDol = false },
            new TagDetails() { TagNumber = 0xDF7E, Source = Source.Icc, Decoder = ConversionType.ByteArray, Description = "Dynamic Card Verification Value (DCVV)", IsTemplate = false, IsDol = false },
        };
    }
}
